audit-logs.tsx 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import { PermissionAction } from '@supabase/shared-types/out/constants'
  2. import { PageContainer } from 'ui-patterns/PageContainer'
  3. import {
  4. PageHeader,
  5. PageHeaderAside,
  6. PageHeaderDescription,
  7. PageHeaderMeta,
  8. PageHeaderSummary,
  9. PageHeaderTitle,
  10. } from 'ui-patterns/PageHeader'
  11. import { PageSection, PageSectionContent } from 'ui-patterns/PageSection'
  12. import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader'
  13. import { AuditLogsForm } from '@/components/interfaces/Auth/AuditLogsForm'
  14. import AuthLayout from '@/components/layouts/AuthLayout/AuthLayout'
  15. import DefaultLayout from '@/components/layouts/DefaultLayout'
  16. import { DocsButton } from '@/components/ui/DocsButton'
  17. import NoPermission from '@/components/ui/NoPermission'
  18. import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions'
  19. import { DOCS_URL } from '@/lib/constants'
  20. import type { NextPageWithLayout } from '@/types'
  21. const AuditLogsPage: NextPageWithLayout = () => {
  22. const { can: canReadAuthSettings, isSuccess: isPermissionsLoaded } = useAsyncCheckPermissions(
  23. PermissionAction.READ,
  24. 'custom_config_gotrue'
  25. )
  26. if (isPermissionsLoaded && !canReadAuthSettings) {
  27. return <NoPermission isFullPage resourceText="access your project's audit logs settings" />
  28. }
  29. return (
  30. <>
  31. <PageHeader size="default">
  32. <PageHeaderMeta>
  33. <PageHeaderSummary>
  34. <PageHeaderTitle>Audit Logs</PageHeaderTitle>
  35. <PageHeaderDescription>
  36. Track and monitor auth events in your project
  37. </PageHeaderDescription>
  38. </PageHeaderSummary>
  39. <PageHeaderAside>
  40. <DocsButton href={`${DOCS_URL}/guides/auth/audit-logs`} />
  41. </PageHeaderAside>
  42. </PageHeaderMeta>
  43. </PageHeader>
  44. <PageContainer size="default">
  45. {!isPermissionsLoaded ? (
  46. <PageSection>
  47. <PageSectionContent>
  48. <GenericSkeletonLoader />
  49. </PageSectionContent>
  50. </PageSection>
  51. ) : (
  52. <AuditLogsForm />
  53. )}
  54. </PageContainer>
  55. </>
  56. )
  57. }
  58. AuditLogsPage.getLayout = (page) => (
  59. <DefaultLayout>
  60. <AuthLayout title="Audit Logs">{page}</AuthLayout>
  61. </DefaultLayout>
  62. )
  63. export default AuditLogsPage